Commercial software packages typically use licenses to control access to services those packages provide. For example, a user who acquires a software package may not be able to use that package until the user provides a code generated when the user submits payment. Once the user provides the code in, e.g., a dialog window, the license manager verifies that the code matches that in a secure database and allows the execution of the software to proceed.
Sophisticated software packages having multiple features may have separate licenses for each of those features. In this case, a conventional licensing architecture provides licensing capability that enables certain features in a software product while not enabling other features. For example, a software product may have basic features that are available upon payment of a basic fee and advanced features that are available upon payment of an additional fee. When a user has paid only the basic fee, the licensing capability ensures that the license for the basic features is turned on while the license for the advanced features is turned off. Upon payment of the additional fee, the user provides a code that turns on the license for the advanced features.
In some arrangements, licenses may take the form of feature enablers. Feature enablers are small programs that interact with data structures such as the system registry of Microsoft® Windows in order to tune system according to required configuration. In other arrangements, however, licenses take the form of electronic licenses that include text files containing encrypted codes.